/*
 * TagString.h
 *
 *  Created on: 18 juin 2011
 *      Author: Pierrick Caillon <pierrick@megami.fr>
 */

#ifndef TAGSTRING_H_
#define TAGSTRING_H_

#include "NamedTag.h"
#include "IValueTag.h"

namespace NamedBinaryTag
{

class __attribute__((visibility("default"))) TagString: public NamedBinaryTag::NamedTag,
		public NamedBinaryTag::IValueTag
{
private:
	std::string value;
public:
	TagString();
	virtual ~TagString();

	TagTypes get_TagType() const;

	void Read(std::istream &input, bool ignoreName);
	void Write(std::ostream &output, bool ignoreName) const;

	std::string get_Value() const;
	void set_Value(std::string value);

	ITag *clone() const;
protected:
	TagString(void *root) : NamedTag(root) {}
	ITag *clone(void *newRoot) const;
};

}

#endif /* TAGSTRING_H_ */
